Vous devez activer Javascript pour accéder à ce site
 

Semaine

RECHERCHE

Applications du RDF

Le RDF se retrouve un peu partout sur le web, parfois de façon « invisible », c'est-à-dire qu'il est souvent utilisé dans les échanges automatiques entre les logiciels. En outre, il est utilisé au sein des portails, par exemple. Voyons maintenant quatre applications RDF bien établies :

Dublin Core
Il s'agit sans doute de l'utilisation la plus connue et la plus répandue du RDF. La norme Dublin Core est assez simple et vise à décrire les travaux rendus disponibles sur le web (auteur, titre, date, etc.). Elle est notamment utilisée au sein des livres électroniques (comme les EPUB). Cette norme s'inspire de la bibliothéconomie.
Creative Commons
Il s'agit d'une façon de décrire les droits accordés sur le contenu placé sur le web. Par exemple, vous voulez savoir si vous pouvez recopier telle ou telle page web; si l'auteur a utilisé la norme Creative Commons, alors vous devriez pouvoir savoir ce qui est permis par l'auteur.
FOAF
La norme FOAF (« Friend Of A Friend » - « ami d'un ami ») permet de décrire un individu et les gens qu'il connaît. Cette norme sert à traiter les réseaux sociaux.
RSS/RDF
La norme RSS est utilisée par les blogues et sites de nouvelles. Le site mozilla.org a plusieurs articles sur le sujet (http://developer.mozilla.org/en/docs/RSS). En gros, un document RSS/RDF contient une version XML des dernières nouvelles. Par la suite, plusieurs de ces fichiers XML peuvent être combinés pour créer un portail de nouvelles ou utilisés avec un outil-client de type « RSS aggregator » pour obtenir automatiquement les dernières nouvelles.

Un exemple : Dublin Core

La norme Dublin Core définit plusieurs « verbes » (au sein du RDF); on peut en consulter la liste à l'adresse http://dublincore.org/documents/dcmi-terms/ (en anglais). Cette norme a été publiée pour la première fois en juillet 1999.

Le préfixe de la norme Dublin Core est « http://purl.org/dc/elements/1.1/ », du moins pour les éléments de base présentés ici. Voici les URI complets et leur signification :

http://purl.org/dc/elements/1.1/creator
Personne ou organisme qui est l'auteur du travail.
http://purl.org/dc/elements/1.1/contributor
Personne ou organisme qui a contribué à un travail, mais sans en être l'auteur.
http://purl.org/dc/elements/1.1/coverage
Lieu et période correspondant au travail.
http://purl.org/dc/elements/1.1/date
Date associée au travail, généralement sous la forme AAAA-MM-JJ. Il peut s'agir de la date de publication, de création ou de la dernière révision.
http://purl.org/dc/elements/1.1/description
Brève description du travail.
http://purl.org/dc/elements/1.1/format
Format sous lequel est publié le travail. Si le travail est publié en HTML, alors on utilisera souvent « text/html » pour décrire le format.
http://purl.org/dc/elements/1.1/identifier
Code ou URI qui correspond de façon unique au travail. Si un travail est publié à une adresse web, on peut utiliser cette adresse comme URI; si c'est un livre avec un ISBN, on peut utiliser un URI de la forme « urn:ISBN:0-123-12345-1 ».
http://purl.org/dc/elements/1.1/language
Code ISO-639/ISO-3166 décrivant le travail. Si le travail est publié en français, on peut utiliser « fr-CA »; sinon, en anglais, ce serait « en-CA » (CA signifie Canada).
http://purl.org/dc/elements/1.1/publisher
Organisme responsable de la publication du travail.
http://purl.org/dc/elements/1.1/relation
Ressource liée au travail. Par exemple, pour un travail fait en classe, on peut établir un lien avec l'exposé du travail.
http://purl.org/dc/elements/1.1/rights
Contient souvent une affirmation permettant de savoir qui est propriétaire du travail (détenteur du droit d'auteur).
http://purl.org/dc/elements/1.1/source
Résumé du travail de quelqu'un d'autre. Cet URI permet de pointer vers la source originale.
http://purl.org/dc/elements/1.1/subject
Généralement, une liste de mots clés.
http://purl.org/dc/elements/1.1/title
Titre du travail.
http://purl.org/dc/elements/1.1/type
Type de la ressource (texte, image, etc.). Notons que le « type » est différent du « format ». Par exemple, une image peut être en format Jpeg ou Gif, un texte peut être en format Word ou ASCII.

Voyons comment nous pouvons décrire ce texte que vous êtes en train de lire, en utilisant la norme Dublin Core. Attribuons-lui l'URI « http://teluq.ca/rdfexemples.html ».

SujetVerbeObjet
http://teluq.ca/ rdfexemples.htmlhttp://purl.org/ dc/elements/1.1/creatorhttp://lemire.me/fr/
http://teluq.ca/ rdfexemples.htmlhttp://purl.org/ dc/elements/1.1/date"2004-07-27"
http://teluq.ca/ rdfexemples.htmlhttp://purl.org/ dc/elements/1.1/title "Introduction au RDF"
http://teluq.ca/ rdfexemples.htmlhttp://purl.org/ dc/elements/1.1/type"text"
http://teluq.ca/ rdfexemples.htmlhttp://purl.org/ dc/elements/1.1/Language"fr-CA"
http://teluq.ca/ rdfexemples.htmlhttp://purl.org/ dc/elements/1.1/subject"RDF, Dublin Core, Creative Commons, FOAF, RSS/RDF"
http://teluq.ca/ rdfexemples.htmlhttp://purl.org/ dc/elements/1.1/rights"Copyright 2005 Daniel Lemire"
http://teluq.ca/ rdfexemples.htmlhttp://purl.org/ dc/elements/1.1/description"Un document comprenant des exemples d'utilisation du RDF en gestion des connaissances."
http://teluq.ca/ rdfexemples.htmlhttp://purl.org/ dc/elements/1.1/format"text/html"
http://teluq.ca/ rdfexemples.htmlhttp://purl.org/ dc/elements/1.1/identifierhttp://teluq.ca/ rdfexemples.html

Nous pouvons aussi représenter ce tableau en XML comme ceci :

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 xmlns:dc="http://purl.org/dc/elements/1.1/">
   <rdf:Description rdf:about="http://teluq.ca/rdfexemples.html">
     <dc:creator rdf:resource="http://lemire.me/fr/" />
     <dc:date>2004-07-27</dc:date>
     <dc:title>Introduction au RDF</dc:title>
     <dc:type>text</dc:type>
     <dc:Language>fr-CA</dc:Language>
     <dc:subject>RDF, Dublin Core, Creative Commons,
     FOAF, RSS/RDF</dc:subject>
     <dc:rights>Copyright 2005 Daniel Lemire</dc:rights>
     <dc:description>Un document comprenant des exemples
     d'utilisation du RDF en gestion des connaissances.</dc:description>
     <dc:format>text/html</dc:format>
     <dc:identifier 
     rdf:resource="http://teluq.ca/rdfexemples.html" />
  </rdf:Description>
 </rdf:RDF>

Nous pouvons aussi représenter ce tableau sous la forme d'un graphe :

../module5/dc.pdf rdfexemples.html identifier http://lemire.me/fr/ creator 2004-07-27 date Introduction au RDF title text type fr-CA Language RDF subject Copyright 2005 Daniel Lemire rights Un document comprenant des exemples d'utilisation du RDF en gestion des connaissances. description html format

Évidemment, Dublin Core est une norme RDF et non pas une norme XML. Il est donc possible d'exprimer du contenu Dublin Core sans passer par le XML. Nous pourrions très bien nous en tenir au tableau sujet/verbe/complément ou utiliser une autre syntaxe. Un syntaxe plus populaire que le XML est sans doute celle décrite par la RFC 2731. Elle est facile à comprendre: il suffit d'utiliser des éléments meta avec les attributs name et content. La convention est que si l'attribute débute par le préfixe « DC.» ce qui suit est une information Dublin Core. Voici un exemple:

<meta name    = "DC.date" 
 content = "2004-07-27" />
<meta name    = "DC.title" 
 content = "Introduction au RDF" />
<meta name    = "DC.type" 
 content = "text" />
<meta name    = "DC.Language" 
 content = "fr-CA" />
<meta name    = "DC.subject" 
 content = "RDF, Dublin Core, Creative Commons, FOAF, RSS/RDF" />
<meta name    = "DC.rights" 
 content = "Copyright 2005 Daniel Lemire" />
<meta name    = "DC.description" 
 content = "Un document comprenant des exemples
     d'utilisation du RDF en gestion des connaissances." />
<meta name    = "DC.format" 
 content = "text/html" />

Notons aussi que les conventions d'espace de noms s'appliquent et que l'ordre n'est pas important. Nous pouvons donc remplacer le XML précédent par celui-ci :

<?xml version="1.0" encoding="ISO-8859-1"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns="http://purl.org/dc/elements/1.1/">
   <rdf:Description rdf:about="http://teluq.ca/rdfexemples.html">
     <creator rdf:resource="http://lemire.me/fr/" />
     <title>Introduction au RDF</title>
     <date>2004-07-27</date>
     <type>text</type>     
     <subject>RDF, Dublin Core, Creative Commons,
     FOAF, RSS/RDF</subject>
     <rights>Copyright 2005 Daniel Lemire</rights>
     <description>Un document comprenant des exemples
     d'utilisation du RDF en gestion des connaissances.</description>
     <format>text/html</format>
     <identifier 
     rdf:resource="http://teluq.ca/rdfexemples.html" />
     <Language>fr-CA</Language>
  </rdf:Description>
</rdf:RDF>

Il existe des applications plus sophistiquées de la norme Dublin Core, mais nous avons ici l'essentiel. Vous pouvez dès maintenant cataloguer les ressources d'une entreprise en utilisant simplement ce que nous venons de présenter. Comme la norme est utilisée partout dans le monde, il sera possible d'échanger ces descriptions ou d'utiliser des logiciels communs pour le traitement ou l'affichage des informations.

Un exemple : Creative Commons

Une des limites apparentes de la norme Dublin Core est son incapacité à spécifier de façon précise les droits accordés sur un travail. Le problème est particulièrement fréquent sur le web : a-t-on le droit d'utiliser telle ou telle image gratuitement, de la reproduire, de la modifier, et ainsi de suite.

Pour résoudre cette difficulté, les gens font appel à la norme Creative Commons, qui utilise le préfixe « http://web.resource.org/cc/ ». Cette norme définit une classe « Work » (travail, en anglais, ici au sens d'oœuvre), mais emprunte pratiquement tout le reste à Dublin Core qu'elle vient compléter. La norme Creative Commons a été proposée en 2001 par James Boyle, Michael Carroll, Lawrence Lessig, Hal Abelson, Eric Saltzman et Eric Eldred.

Voici un exemple très simple d'une description utilisant la norme Creative Commons :

SujetVerbeObjet
http://teluq.ca/ rdfexemples.htmlhttp://www.w3.org/1999/ 02/22-rdf-syntax-ns#typehttp://web.resource.org/ cc/Work
http://teluq.ca/ rdfexemples.htmlhttp://purl.org/ dc/elements/1.1/title"Le RDF par l'exemple"

Et voici la version XML correspondante :

<?xml version="1.0" encoding="ISO-8859-1"?>
<rdf:RDF xmlns="http://web.resource.org/cc/"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
 <Work rdf:about="http://teluq.ca/rdfexemples.html">
  <dc:title>Le RDF par l'exemple</dc:title>
</Work>
</rdf:RDF>

Tout ce que nous avons affirmé dans ce dernier document, c'est que la page actuelle appartient à la classe « Work ». Dans l'état actuel des choses, nous affirmons par défaut qu'il n'est pas permis d'utiliser cette page, car nous n'avons attribué aucune permission.

Supposons que l'auteur désire accorder le droit au lecteur de redistribuer, de modifier et de partager cette page, pour autant qu'il utilise la même licence. Nous pourrions alors utiliser la licence « Attribution-ShareAlike 2.0 » dont l'URI est « http://creativecommons.org/licenses/by-sa/2.0/ ». Évidemment, nous pouvons aussi créer notre licence de toute pièce, mais dans l'exemple, nous utiliserons la licence « Attribution-ShareAlike 2.0 ». Pour faire un lien entre notre travail et une licence, nous utilisons le verbe dont l'URI est « http://web.resource.org/cc/license », comme ce qui suit; observez bien la dernière ligne du tableau.

SujetVerbeObjet
http://teluq.ca/ rdfexemples.htmlhttp://www.w3.org/1999/ 02/22-rdf-syntax-ns#typehttp://web.resource.org/ cc/Work
http://teluq.ca/ rdfexemples.htmlhttp://purl.org/ dc/elements/1.1/title"Le RDF par l'exemple"
http://teluq.ca/ rdfexemples.htmlhttp://web.resource.org/ cc/licensehttp://creativecommons.org/licenses/by-sa/2.0/

Nous pouvons aussi utiliser le XML correspondant :

<?xml version="1.0" encoding="ISO-8859-1"?>
<rdf:RDF xmlns="http://web.resource.org/cc/"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <Work rdf:about="http://teluq.ca/rdfexemples.html">
  <dc:title>Le RDF par l'exemple</dc:title>
  <license 
  rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" /> 
</Work>
</rdf:RDF>

Voici la représentation sous la forme d'un graphe :

../module5/cc.pdf rdfexemples.html {Work} Le RDF par l'exemple title http://creativecommons.org/licenses/by-sa/2.0/ license

Nous avons alors un document Creative Commons complet. Cependant, un problème demeure. Supposons qu'un logiciel fasse automatiquement une recherche pour vous et que vous ne désiriez obtenir que les textes que vous pouvez modifier librement. Il n'est pas évident pour une machine de comprendre que l'URI « http://creativecommons.org/licenses/by-sa/2.0/ » vous donne ce droit; d'ailleurs, une telle recherche n'est peut-être pas très simple pour un humain...

Creative Commons définit trois verbes et des objets permettant de décrire une licence et une classe. Toutes les licences appartiennent à la classe ayant pour URI « http://web.resource.org/cc/License ». Les URI des trois verbes sont :

http://web.resource.org/cc/permits
La licence le permet. Creative Commons définit trois URI pouvant être utilisés comme objet de ce verbe. Il y a d'abord « http://web.resource.org/cc/Reproduction », le droit de reproduire en tout ou en partie le travail. Il y a ensuite « http://web.resource.org/cc/Distribution », le droit de redistribuer le travail. Finalement, il y a « http://web.resource.org/cc/DerivativeWorks », le droit de modifier le travail. Évidemment, il est possible de définir ses propres objets.
http://web.resource.org/cc/requires
La licence pose comme condition. Creatives Commons définit quatre URI pouvant être utilisés comme objet de ce verbe : « http://web.resource.org/cc/Notice » pour spécifier qu'il faut reproduire intégralement les notes légales (licence et droits d'auteurs); « http://web.resource.org/cc/Attribution » pour spécifier qu'il faut attribuer à l'auteur le crédit du travail; « http://web.resource.org/cc/ShareAlike » pour spécifier que si l'on redistribue le travail, il faut le faire en gardant la même licence; « http://web.resource.org/cc/SourceCode » pour spécifier que le code source doit être redistribué.
http://web.resource.org/cc/prohibits
La licence interdit. Il n'y a qu'un seul URI défini par Creative Commons qui peut être utilisé avec ce verbe : « http://web.resource.org/cc/CommercialUse »; cela permet d'interdire l'utilisation à des fins commerciales. Encore une fois, il est possible de définir ses propres objets.

Dans le cas de la licence « Attribution-ShareAlike 2.0 », nous pouvons la décrire comme suit :

SujetVerbeObjet
http://creativecommons.org/ licenses/by-sa/2.0/http://www.w3.org/1999/ 02/22-rdf-syntax-ns#typehttp://web.resource.org/ cc/License
http://creativecommons.org/ licenses/by-sa/2.0/http://web.resource.org/ cc/permitshttp://web.resource.org/ cc/Reproduction
http://creativecommons.org/ licenses/by-sa/2.0/http://web.resource.org/ cc/permitshttp://web.resource.org/ cc/Distribution
http://creativecommons.org/ licenses/by-sa/2.0/http://web.resource.org/ cc/requireshttp://web.resource.org/ cc/Notice
http://creativecommons.org/ licenses/by-sa/2.0/http://web.resource.org/ cc/requireshttp://web.resource.org/ cc/Attribution
http://creativecommons.org/ licenses/by-sa/2.0/http://web.resource.org/ cc/permitshttp://web.resource.org/ cc/DerivativeWorks
http://creativecommons.org/ licenses/by-sa/2.0/http://web.resource.org/ cc/requireshttp://web.resource.org/ cc/ShareAlike

Nous pouvons aussi utiliser le XML suivant :

<?xml version="1.0" encoding="ISO-8859-1"?>
<rdf:RDF xmlns="http://web.resource.org/cc/"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<License rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
   <permits rdf:resource="http://web.resource.org/cc/Reproduction" />
   <permits rdf:resource="http://web.resource.org/cc/Distribution" />
   <requires rdf:resource="http://web.resource.org/cc/Notice" />
   <requires rdf:resource="http://web.resource.org/cc/Attribution" />
   <permits rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
   <requires rdf:resource="http://web.resource.org/cc/ShareAlike" />
</License>
</rdf:RDF>

En pratique, nous combinons souvent le tout (description du travail et description de la licence) pour obtenir le XML suivant :

<rdf:RDF xmlns="http://web.resource.org/cc/"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
 <Work rdf:about="http://teluq.ca/rdfexemples.html">
  <dc:title>Le RDF par l'exemple</dc:title>
  <license rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" /> 
</Work>
<License rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
   <permits rdf:resource="http://web.resource.org/cc/Reproduction" />
   <permits rdf:resource="http://web.resource.org/cc/Distribution" />
   <requires rdf:resource="http://web.resource.org/cc/Notice" />
   <requires rdf:resource="http://web.resource.org/cc/Attribution" />
   <permits rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
   <requires rdf:resource="http://web.resource.org/cc/ShareAlike" />
</License>
</rdf:RDF>

Voilà! De cette manière, une machine pourra automatiquement déterminer quels droits l'utilisateur a sur une œuvre. Un logiciel pourrait automatiquement avertir l'utilisateur de ses obligations si jamais il tentait d'enregistrer sur son disque une copie de l'œuvre. Dans le cas d'une entreprise qui utilise beaucoup de contenu multimédia, l'utilisation de cette norme pourrait être très utile pour détecter automatiquement les violations des droits d'auteur.

Un exemple : FOAF

Les personnes sont souvent ce qu'il y a de plus important dans une organisation; il n'est donc pas étonnant qu'on veuille utiliser le RDF pour les décrire. Pour ce faire, on utilise souvent la norme FOAF pour « Friend-Of-A-Friend », ou un ami d'un ami, en français, (préfixe http://xmlns.com/foaf/0.1/) qui définit la classe « Person » (personne, en anglais).

Le projet FOAF a été lancé de façon informelle par Daniel Brickley en 1998. À l'époque, il avait mis un texte RDF ressemblant à ceci sur sa page personnelle : (Attention.- Il ne s'agit pas de RDF/XML valable.)

<RDF:RDF  
  xmlns="vocabdemo.rdf">
  xmlns:rdf="http://www.w3.org/TR/WD-rdf-syntax#">
  <Person ID="dan">
    <name> Dan Brickley </name>
    <Email> daniel.brickley@bristol.ac.uk </Email>
    <telephone rdf:resource = "phone:44-1-+44(0)117-9287493" />
    <pager rdf:resource = "phone:44-1-+44(0)2523-1781115" />
    <homePage 
    rdf:resource= "http://purl.org/net/danbri/" />
    <homePage 
    rdf:resource= "http://www.ilrt.bris.ac.uk/about/staff/dan.html"/>
  </Person>
</RDF:RDF>

La norme FOAF est très riche; mais à la base, on trouve les verbes suivants :

http://xmlns.com/foaf/0.1/name
Verbe pointant vers le nom de la personne (John Smith)
http://xmlns.com/foaf/0.1/nick
Verbe pointant vers le surnom informel de la personne (joblo).
http://xmlns.com/foaf/0.1/title
Verbe pointant vers le titre de la personne (docteur, monsieur, madame).
http://xmlns.com/foaf/0.1/homepage
Verbe pointant vers la page personnelle de la personne.
http://xmlns.com/foaf/0.1/mbox
Verbe pointant vers l'adresse électronique de la personne.
http://xmlns.com/foaf/0.1/img
Verbe pointant vers une image de la personne, la représentant spécifiquement.
http://xmlns.com/foaf/0.1/depiction
Verbe pointant vers une image représentant la personne. Contrairement à « img », l'image peut être une photo de groupe.
http://xmlns.com/foaf/0.1/family_name
Verbe pointant vers le nom de famille de la personne (Smith).
http://xmlns.com/foaf/0.1/givenname
Verbe pointant vers le prénom de la personne (John).

En XML, une description de l'auteur de ce document pourrait se présenter comme suit :

<?xml version="1.0" encoding="ISO-8859-1"?>
<rdf:RDF 
  xmlns:foaf="http://xmlns.com/foaf/0.1/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
 <foaf:Person>
   <foaf:givenname>Daniel</foaf:givenname>
   <foaf:family_name>Lemire</foaf:family_name>
   <foaf:homepage rdf:resource="http://lemire.me/fr/" />
   <foaf:mbox>lemire@uqam.ca</foaf:mbox>
   <foaf:img 
   rdf:resource="http://lemire.me/fr/images/GIF/zel2p.gif" />
 </foaf:Person>
</rdf:RDF>

Voici le graphe équivalent :

../module5/foaf.pdf (anonyme) Person Daniel givenname Lemire family_name http://lemire.me/fr/ homepage lemire@uqam.ca mbox zel2p.gif img

Notez que la balise « Person » n'a pas d'attribut « rdf:about ». Actuellement, il existe un débat sur cette question : Peut-on attribuer un URI unique à chaque individu et si oui, comment le choisir? C'est un cas où l'URI du sujet est « implicite » : cela signifie que dans les triplets sujet/verbe/objet, le sujet a un URI « fictif », qui n'est valable que dans le cadre du document que l'on traite. Autrement dit, le programme qui traite le document doit allouer dynamiquement un URI au sujet pour la durée du traitement. Rappelons-nous, en effet, que la norme RDF permet d'omettre le sujet, mais que si le sujet est spécifié, il doit être un URI.

Nous pouvons imaginer que la norme FOAF sera éventuellement utilisée pour représenter les réseaux sociaux, les organisations, et ainsi de suite. Une fois l'information sociale représentée de façon formelle, nous pouvons croire qu'il sera possible de poser des questions à un ordinateur de l'ordre suivant : Est-ce que je connais quelqu'un qui connaît quelqu'un travaillant chez IBM?

Un exemple : RSS/RDF

La version 1.0 de la norme RSS est un exemple de RDF. Cette norme dont l'acronyme n'a pas de définition établie, sert à représenter des fils de nouvelles. Elle a été imaginée par la compagnie Netscape et servait alors à la production du portail Netscape (1999). Elle est devenue très populaire et on trouve maintenant des milliers de fils de nouvelles en format RSS dans le monde. Par exemple, sur http://www.yulblog.org/, il y a des centaines de blogues écrits par des Montréalais et la plupart ont un fil de nouvelles en format RSS.

Une nouvelle, appelée « item » en RSS, prend la forme suivante :

<?xml version="1.0" encoding="ISO-8859-1"?>
<rdf:RDF 
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns="http://purl.org/rss/1.0/">
  <item rdf:about="http://www.nouvelles.com/nouvelles1">
    <title>La bourse fait faillite</title>
    <link>http://www.nouvelles.com/nouvelles1.html</link>
    <description>
     Aujourd'hui, on a appris que la bourse a fait faillite.
    </description>
  </item>
</rdf:RDF>

Nous constatons qu'il y a une classe (item) et trois verbes (title, link, description) qui représentent respectivement le titre, l'URL et le contenu de la nouvelle.

Un document RSS est une liste d'items. Voici un document RSS :

<?xml version="1.0" encoding="ISO-8859-1"?>
<rdf:RDF 
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns="http://purl.org/rss/1.0/">
  <channel rdf:about="http://www.nouvelles.com/nouvelles.rss">
    <title>Un site de nouvelles</title>
    <link>http://www.nouvelles.com/</link>
    <description>
      Nouvelles.com est un superbe site de nouvelles
    </description>   
    <!-- Ensuite, on place une séquence de nouvelles,
    les unes après les autres-->
    <items>
       <rdf:Seq>
         <!-- chaque nouvelle a un URI -->
         <rdf:li resource="http://www.nouvelles.com/nouvelles1" />
         <rdf:li resource="http://www.nouvelles.com/nouvelles2" />
      </rdf:Seq>
    </items>
  </channel>
</rdf:RDF>

Nous constatons une classe « channel » (canal, en anglais) qui contient un titre, un URL (link) et une description. Il y a aussi une liste de nouvelles (item). Généralement, nous combinons le tout dans un seul fichier, comme ceci :

<?xml version="1.0" encoding="ISO-8859-1"?>

<rdf:RDF 
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns="http://purl.org/rss/1.0/">
  <channel rdf:about="http://www.nouvelles.com/nouvelles.rss">
    <title>Un site de nouvelles</title>
    <link>http://www.nouvelles.com/</link>
    <description>
      Nouvelles.com est un superbe site de nouvelles
    </description>   
    <!-- Ensuite, on place une séquence de nouvelles,
    les unes après les autres-->
    <items>
      <rdf:Seq>
        <!-- chaque nouvelle a un URI -->
        <rdf:li resource="http://www.nouvelles.com/nouvelles1" />
        <rdf:li resource="http://www.nouvelles.com/nouvelles2" />
     </rdf:Seq>
    </items>
  </channel>
  <item rdf:about="http://www.nouvelles.com/nouvelles1">
    <title>La bourse fait faillite</title>
    <link>http://www.nouvelles.com/nouvelles1.html</link>
    <description>
     Aujourd'hui, on a appris que la bourse a fait faillite.
    </description>
  </item>
  <item rdf:about="http://www.nouvelles.com/nouvelles2">
    <title>Rien ne va plus à l'école</title>
    <link>http://www.nouvelles.com/nouvelles2.html</link>
    <description>
     Un étudiant se serait rendu coupable d'apprentissage.
    </description>
  </item>
</rdf:RDF>

Les applications du RSS sont multiples. Supposons que votre organisation collabore avec plusieurs autres organisations et que vous vouliez rendre disponibles, sur une seule page web, toutes les nouvelles de toutes les organisations dont vous faites partie. Si chaque organisation rend disponible sur le web un document RSS toujours mis à jour, vous pouvez facilement récupérer les nouvelles de chacun et les afficher à un seul endroit. Au lieu de solliciter tous les membres par courriel, les fils de nouvelles RSS permettent à une machine de faire un tri et de personnaliser le contenu.

La norme RSS est en voie d'être remplacée par la norme Atom. Un des avantages du nouveau format Atom est que chaque nouvelle doit avoir un identifiant unique ce qui permet d'éviter les doublons. Cependant, la norme RSS risque d'être toujours utile pendant bien des années. Atom n'est pas en RDF/XML. En voici un exemple :

<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

 <title>Un site de nouvelles</title>
 <subtitle>Nouvelles.com est un superbe site de nouvelles</subtitle>
 <link href="http://www.nouvelles.com/"/>
 <updated>2003-12-13T18:30:02Z</updated>
 <author>
   <name>John Doe</name>
   <email>johndoe@example.com</email>
 </author>
 <id>urn:uuid:60a76c80-d399-11d9-b91C-0003939e0af6</id>

 <entry>
   <title>La bourse fait faillite</title>
   <link href="http://www.nouvelles.com/nouvelles1.html"/>
   <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id>
   <updated>2003-12-13T18:30:02Z</updated>
   <summary>Aujourd'hui, on a appris que la bourse a fait faillite.
   </summary>
 </entry>

</feed>

Conclusion

Nous avons étudié quatre applications importantes du RDF sur le web. Le nombre d'applications est toutefois beaucoup plus important. Par exemple, Facebook fait la promotion de la norme Open Graph.

Il faut garder à l'esprit que le RDF n'est pas le XML et que le XML ne sert qu'à représenter le RDF (et encore, ce n'est pas toujours possible).

Pour en apprendre davantage sur le RDF, nous vous suggérons le livre de Shelley Powers, Practical RDF, publié chez O'Reilly.


© Daniel Lemire, 2014. Tous droits réservés.